<?php
/**
 * @author 周郎(zhoulang),web@zhoulang.net
 * @copyright 岁月联盟 版权所有
 * @link http://www.syue.com  http://bbs.syue.com
 * 
 */
require_once SYUEBLOG_ROOT.'/cache/FileCache.php';
require_once SYUEBLOG_ROOT.'/cache/MemcacheCache.php';

/**
 * 缓存工厂类
 * @author 周郎(zhoulang)
 *
 */
class CacheFactory {
	//缓存实例
	private $cache = null;
	//缓存工厂实例
	private static $_instance = null;
	/**
	 * 默认构造器
	 *
	 */
	private function __construct() {
		//根据
		switch (CACHE_TYPE) {
			case 'file'://文件存储缓存
				$this->cache = new FileCache();
				break;
			case 'memcache'://memcache存储缓存
				$this->cache = new MemcacheCache();
				break;
			default://默认文件存储缓存
				$this->cache = new FileCache();
				break;
		}
	}
	/**
	 * 获取缓存工厂实例
	 *
	 * @return CacheFactory
	 */
	public static function getInstance() {
		//如果工厂实例为空，新建工厂实例
		if(self::$_instance == null) {
			self::$_instance = new self();
		}
		return self::$_instance;
	}
	/**
	 * 保存缓存内容
	 *
	 * @param string $key 缓存唯一标示
	 * @param string $info 缓存内容
	 */
	public function save($key, $info) {
		$this->cache->save($key, $info);
	}
	/**
	 * 获取缓存内容,如果过期或不存在，返回false
	 *
	 * @param string $key 缓存唯一标示
	 * @return string || bool 缓存内容
	 */
	public function get($key) {
		return $this->cache->get($key);
	}
	/**
	 * 移除缓存
	 *
	 * @param string $key 缓存唯一标示
	 */
	public function remove($key) {
		$this->cache->remove($key);
	}
	/**
	 * 判断缓存是否存在或是否过期
	 *
	 * @param string $key 缓存唯一标示
	 * @return bool
	 */
	public function isOverdue($key) {
		return $this->cache->isOverdue($key);
	}
}

?>
